package org.ruoyi.interview.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.ruoyi.common.mybatis.core.domain.BaseEntity;
import org.ruoyi.interview.domain.InterviewQuestion;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;

/**
 * 面试题视图对象 interview_question
 *
 * @author ruoyi
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = InterviewQuestion.class)
public class InterviewQuestionVo extends BaseEntity implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 面试题主键
     */
    @ExcelProperty(value = "面试题主键")
    private Long questionId;

    /**
     * 题目内容
     */
    @ExcelProperty(value = "题目内容")
    private String content;

    /**
     * 题目类型（选择题、简答题、编程题等）
     */
    @ExcelProperty(value = "题目类型")
    private String type;

    /**
     * 难度等级（简单、中等、困难）
     */
    @ExcelProperty(value = "难度等级")
    private String difficulty;

    /**
     * 分类ID（关联interview_question_category表）
     */
    @ExcelProperty(value = "分类ID")
    private Long categoryId;

    /**
     * 分类名称
     */
    @ExcelProperty(value = "分类名称")
    private String categoryName;

    /**
     * 答案
     */
    @ExcelProperty(value = "答案")
    private String answer;

    /**
     * 解析
     */
    @ExcelProperty(value = "解析")
    private String analysis;

    /**
     * 状态（0正常 1停用）
     */
    @ExcelProperty(value = "状态")
    private String status;

    /**
     * 是否热门（0否 1是）
     */
    @ExcelProperty(value = "是否热门")
    private String isHot;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 关联的领域ID列表
     */
    private List<Long> fieldIds;

    /**
     * 关联的标签ID列表
     */
    private List<Long> tagIds;

    /**
     * 删除标志
     */
    private String delFlag;
    
    /**
     * 是否被当前用户收藏 (0-未收藏, 1-已收藏)
     */
    private Integer isFavorite;
    
    /**
     * 是否被当前用户掌握 (0-未掌握, 1-已掌握)
     */
    private Integer isMastered;
}